/*
 *  Funciones para autocompletado
 */

var targetId = '';

$(function() {

	$('form').submit(function() {
		seleccionaTodos();
	});

	$('.txt_buscar').keypress(function(key) {
		return key.keyCode != 13;
	});

	$('.txt_buscar').keyup(function(key) {
		if($(this).val().length < 3)
			$(this).parent().find('input[type="hidden"]').val('');
	});

	$('.clear').click(function() {
		var parent = $(this).parent();
		$(parent).find('.txt_buscar').val('');
		$(parent).find('input[type=hidden]').val('');
		
		return false;
	});

});

function buscaItems(request, response) {
	targetId = '#' + this.options['targetId']
	cargando(true);

	$.ajax({
		url: this.options['url'],
		type: 'POST',
		data: { value: request.term },
		success: function (data) {
			cargando(false);
			response(muestraResultados(data));
		},
		error: function () {
			cargando(false);
		}
	});
}

function seleccionaTodos() {
	$('.select_multiple option').each(function() {
		$(this).attr('selected', true);
	});
}

function muestraResultados(data) {
	data = $.parseJSON(data);
	var items = new Array();

	if(data.length == 0) {
		$(targetId).parent().find('input[type="hidden"]').val('');
	} else {
		for (var i = 0; i < data.length; i++) {
			var rs = data[i];

			var item = {
				label: rs['value'],
				id: rs['id'],
				value: rs['value']
			};
			items[i] = item;
		}
	}

	return items;
}

function cargando(cargando) {
	var element = $(targetId).parent();
	if (cargando) {
		$(element).find('.clear_bg_loading').css('display', 'inline-block');
		$(element).find('.clear_bg').css('display', 'none');
	} else {
		$(element).find('.clear_bg_loading').css('display', 'none');
		$(element).find('.clear_bg').css('display', 'inline-block');
	}
}

function agregaItems(event, ui) {
	if ($(targetId).attr('type') == 'hidden') { //input hidden
		$(this).val(ui.item.value);
		$(targetId).val(ui.item.id);
	} else { //select multiple
		$(this).val('');

		var contiene = false;
		$(targetId + ' option').each(function() {
			if ($(this).attr('value') == ui.item.id) {
				contiene = true;
				return
			}
		});

		if (!contiene)
			$(targetId).append('<option value="' + ui.item.id + '">' + ui.item.value + '</option>');
	}

	return false;
}

function eliminaItems(element) {
	var selectId = $(element).parent().find('select').attr('id');
	$('#' + selectId + ' option').each(function() {
		if ($(this).attr('selected'))
			$(this).remove();
	});
}
